#include <bits/stdc++.h>
using namespace std;

// #define ONLINE_JUDGE

#ifndef ONLINE_JUDGE
#define dbg(x...)                             \
	{                                         \
		cerr << "\033[32;1m" << #x << " -> "; \
		err(x);                               \
	}
void err()
{
	cerr << "\033[39;0m" << endl;
}
template <typename T, typename... A>
void err(T a, A... x)
{
	cerr << a << ' ';
	err(x...);
}
#else
#define dbg(...)
#endif

typedef long long LL;

const int N = 1 << 16;

bool vis[N];

vector<int> G[N];

char s[N], ans[N][20];

int bitcnt[N];

void p(char s[], int l, int r) // [l, r)
{
	for (int i = l; i < r; ++i)
		putchar(s[i]);
}

void p(int id)
{
	if (!G[id].size())
		return;

	int u = id;
	assert(G[u].size() <= 2);
	for (int v : G[u])
	{
		int n1 = bitcnt[u], n2 = bitcnt[v];
		p(ans[u], 0, 4);
		putchar('|');
		p(ans[u], 4, 8);
		printf(" %s ", n1 < n2 ? "buy" : "eat");
		p(ans[v], 0, 4);
		putchar('|');
		p(ans[v], 4, 8);

		putchar('\n');

		p(ans[u], 8, 12);
		putchar('|');
		p(ans[u], 12, 16);
		printf("     ");
		p(ans[v], 8, 12);
		putchar('|');
		p(ans[v], 12, 16);
		printf("\n---\n");
	}
}

int trans(char s[])
{
	int res = 0;
	for (int i = 0; i < 16; ++i)
	{
		res <<= 1;
		if (s[i] == '*')
			++res;
	}
	return res;
}

pair<int, int> finddot(char s[]) // [fi, se] is .
{
	assert(strlen(s) == 16);
	pair<int, int> p(0, -1);
	static char t[40];
	strcpy(t, s);
	strcpy(t + 16, s);

	for (int i = 0, j; i < 32; i = j + 1)
	{
		j = i;
		if (i >= 16)
			break;
		if (t[i] != '.')
			continue;
		while (j + 1 < 32 && t[j + 1] == '.')
			++j;
		if (j - i + 1 > p.second - p.first + 1)
		{
			p.first = i;
			p.second = j;
		}
	}
	p.second %= 16;
	return p;
}

int in[N], out[N];
void check()
{
	for (int i = 0; i < N; ++i)
	{
		for (int v : G[i])
		{
			++in[v];
			++out[i];
		}
	}

	assert(out[0] == 1);
	for (int i = 0; i < N; ++i)
	{
		if (in[i] == 0)
			continue;
		int x = 0;
		if (bitcnt[i] <= 5)
			++x;
		if (bitcnt[i] > 0)
			++x;
		if (out[i] != x)
		{
			dbg(i, string(ans[i]), out[i], x);
		}
		assert(out[i] == x);
	}
}

int main(int argc, char const *argv[])
{
	// auto px = finddot("............**..");
	// dbg(px.first, px.second);
	// return 0;

	for (int i = 0; i < N; ++i)
	{
		int t = i;
		while (t)
		{
			t &= (t - 1);
			++bitcnt[i];
		}
	}
	scanf("%s", s);

	for (int i = 0; i < 16; ++i)
		ans[0][i] = '.';

	queue<int> Q;
	Q.push(0);
	while (!Q.empty())
	{
		int u = Q.front();
		Q.pop();
		vis[u] = 1;
		int n1 = bitcnt[u];
		auto p = finddot(ans[u]);

		// printf("%s %d %d\n", ans[u], p.first, p.second);
		assert((~p.first) && (~p.second));
		static char nextstate[20];

		if (n1 > 0) // eat
		{
			int x = (p.second + 1) % 16;
			assert(ans[u][x] == '*');

			strcpy(nextstate, ans[u]);
			nextstate[x] = '.';

			int v = trans(nextstate);
			G[u].push_back(v);

			if (!vis[v])
			{
				Q.push(v);
				vis[v] = 1;

				strcpy(ans[v], nextstate);
			}
		}
		if (n1 <= 5) // buy
		{
			int x = p.first;
			assert(ans[u][x] == '.');

			strcpy(nextstate, ans[u]);
			for (int i = 0; i < 10; ++i)
			{
				int y = (x + i) % 16;
				assert(ans[u][y] == '.');
				nextstate[y] = '*';
			}

			int v = trans(nextstate);
			G[u].push_back(v);

			if (!vis[v])
			{
				Q.push(v);
				vis[v] = 1;

				strcpy(ans[v], nextstate);
			}
		}
	}

	for (int i = 0; i < N; ++i)
	{
		// dbg(i);
		p(i);
	}
	check();
	return 0;
}